package com.example.gw_back_end.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@NoArgsConstructor
@Data
public class Result<T> {
    private Integer code;  // 业务状态代码code （0 - 成功 || 1 - 失败）
    private String message;  // 业务提示信息
    private T data;  // 业务数据

    // 快速返回操作成功响应结果（带响应数据）
    public static <E> Result<E> success(E data) {
        return new Result<>(0,"操作成功！",data);
    }

    // 快速返回操作成功响应结果（不带响应数据）
    public static <E> Result<E> success() {
        return new Result<>(0,"操作成功！",null);
    }

    // 自定义返回操作结果响应结果
    public static <E> Result<E> success(String message,E data) {
        return new Result<>(0, message, data);
    }

    // 快速返回操作失败的想要结果
    public static <E> Result<E> error() {
        return new Result<>(1,"操作失败！",null);
    }

    // 快速返回操作失败的响应结果（自定义消息）
    public static <E> Result<E> error(String message) {
        return new Result<>(1,message,null);
    }

    // 快速返回操作失败的响应结果（带错误码）
    public static <E> Result<E> error(Integer code, String message) {
        return new Result<>(code, message, null);
    }
}
